package co.edu.javeriana.konigsberg.xavier.gui.bean;

import java.math.BigInteger;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import co.edu.javeriana.konigsberg.xavier.dto.PaisDTO;
import co.edu.javeriana.konigsberg.xavier.servicio.PaisServicioLocal;

@ManagedBean(name="paisBean")
@SessionScoped
public class PaisBean extends ManagerBean{
	private static final long serialVersionUID = 1L;

	@EJB
	private PaisServicioLocal paisServicio;
	
	private LinkedHashMap<String,BigInteger> paises;
	
	public Map<String, BigInteger> getPaises() {
		if(paises == null){
			paises = new LinkedHashMap<String, BigInteger>();
			List<PaisDTO> paisDTOs = paisServicio.obtenerLista();
			//Collections.sort(paisDTOs);
			for (PaisDTO paisDTO : paisDTOs) {
				paises.put(paisDTO.getNombrePais(), paisDTO.getIdPais());
			}
			//paises = sortHashMapByValuesD(paises);
		}
		return paises;
	}
	public void setPaises(LinkedHashMap<String, BigInteger> paises) {
		this.paises = paises;
	}
	
//	public LinkedHashMap sortHashMapByValuesD(HashMap passedMap) {
//		   List mapKeys = new ArrayList(passedMap.keySet());
//		   List mapValues = new ArrayList(passedMap.values());
//		   Collections.sort(mapValues);
//		   Collections.sort(mapKeys);
//
//		   LinkedHashMap sortedMap = new LinkedHashMap();
//
//		   Iterator valueIt = mapValues.iterator();
//		   while (valueIt.hasNext()) {
//		       Object val = valueIt.next();
//		       Iterator keyIt = mapKeys.iterator();
//
//		       while (keyIt.hasNext()) {
//		           Object key = keyIt.next();
//		           String comp1 = passedMap.get(key).toString();
//		           String comp2 = val.toString();
//
//		           if (comp1.equals(comp2)){
//		               passedMap.remove(key);
//		               mapKeys.remove(key);
//		               sortedMap.put((String)key, (Double)val);
//		               break;
//		           }
//
//		       }
//
//		   }
//		   return sortedMap;
//		}
	
	//====================== Principal Principio ============================//
	
	private BigInteger idPais;
	
	public PaisDTO obtenerSeleccionado(){
		return paisServicio.obtenerPaisPorId(getIdPais());
	}
	
	public BigInteger getIdPais() {
		return idPais;
	}
	public void setIdPais(BigInteger idPais) {
		this.idPais = idPais;
	}
	
	//====================== Principal Fin ============================//
	
	//====================== Segunda Principio ============================//
	
	private BigInteger idPais_02;
	
	public PaisDTO obtenerSeleccionado_02(){
		return paisServicio.obtenerPaisPorId(getIdPais_02());
	}
	
	public BigInteger getIdPais_02() {
		return idPais_02;
	}
	public void setIdPais_02(BigInteger idPais_02) {
		this.idPais_02 = idPais_02;
	}
	
	//====================== Segunda Fin ============================//
	
	//====================== Tercera Principio ============================//
	
	private BigInteger idPais_03;
	
	public PaisDTO obtenerSeleccionado_03(){
		return paisServicio.obtenerPaisPorId(getIdPais_03());
	}
	
	public BigInteger getIdPais_03() {
		return idPais_03;
	}
	public void setIdPais_03(BigInteger idPais_03) {
		this.idPais_03 = idPais_03;
	}
	
	//====================== Tercera Fin ============================//
	
}
